
/**
 * 顺序递增分组 AscendingGroups
 */
export const FOUR_ASCENDING_GROUPS = [
  [1, 2, 3, 4], // 4个连续号码
  [5, 6, 7, 8], // 4个连续号码
  [9, 10, 11, 12], // 4个连续号码
  [13, 14, 15, 16], // 4个连续号码
  [17, 18, 19, 20], // 4个连续号码
  [21, 22, 23, 24], // 4个连续号码
  [25, 26, 27, 28], // 4个连续号码
  [29, 30, 31, 32], // 4个连续号码
  [33, 34, 35, 36], // 4个连续号码
  [37, 38, 39, 40], // 4个连续号码
  [41, 42, 43, 44], // 4个连续号码
  [45, 46, 47, 48, 49] // 5个剩余号码
]

/**
 * 奇偶分组 OddEvenGroups
 * 隔位奇偶分组 AlternateOddEvenGroups 一样
 */
export const FOUR_ODD_EVEN_GROUPS = [
  [1, 3, 5, 7], // 4个奇数
  [9, 11, 13, 15], // 4个奇数
  [17, 19, 21, 23], // 4个奇数
  [25, 27, 29, 31], // 4个奇数
  [33, 35, 37, 39], // 4个奇数
  [41, 43, 45, 47], // 4个奇数
  [2, 4, 6, 8], // 4个偶数
  [10, 12, 14, 16], // 4个偶数
  [18, 20, 22, 24], // 4个偶数
  [26, 28, 30, 32], // 4个偶数
  [34, 36, 38, 40], // 4个偶数
  [42, 44, 46, 48, 49] // 5个偶数和剩余奇数
]

/**
 * 尾数分组 MantissaGroups
 */
export const FOUR_MANTISSA_GROUPS = [
  [1, 11, 21, 31], // 4个号码（尾数1）
  [2, 12, 22, 41], // 4个号码（尾数2）
  [3, 13, 32, 42], // 4个号码（尾数3）
  [4, 23, 33, 43], // 4个号码（尾数4）
  [14, 24, 34, 44], // 4个号码（尾数4）
  [5, 15, 25, 35], // 4个号码（尾数5）
  [6, 16, 26, 45], // 4个号码（尾数6）
  [7, 17, 36, 46], // 4个号码（尾数7）
  [8, 27, 37, 47], // 4个号码（尾数8）
  [18, 28, 38, 48], // 4个号码（尾数8）
  [9, 19, 29, 39], // 4个号码（尾数9）
  [10, 20, 30, 40, 49] // 5个尾数为0
]

/**
 * 隔数分组 SkippedGroups
 * 模4分组 ModuloFourGroups 一样
 * 交错均衡递增分组 StaggeredBalancedIncrementGroups 一样
 */
export const FOUR_SKIPPED_GROUPS = [
  [1, 5, 9, 13], // 4个号码（隔数1）
  [17, 21, 25, 29], // 4个号码（隔数2）
  [33, 37, 41, 45], // 4个号码（隔数3）
  [2, 6, 10, 14], // 4个号码（隔数4）
  [18, 22, 26, 30], // 4个号码（隔数5）
  [34, 38, 42, 46], // 4个号码（隔数6）
  [3, 7, 11, 15], // 4个号码（隔数7）
  [19, 23, 27, 31], // 4个号码（隔数8）
  [35, 39, 43, 47], // 4个号码（隔数9）
  [4, 8, 12, 16], // 4个号码（隔数10）
  [20, 24, 28, 32], // 4个号码（隔数11）
  [36, 40, 44, 48, 49] // 5个剩余号码
]

/**
 * 质数合数分组 PrimeGroups
 */
export const FOUR_PRIME_GROUPS = [
  [2, 3, 5, 7], // 4个质数
  [11, 13, 17, 19], // 4个质数
  [23, 29, 31, 37], // 4个质数
  [41, 43, 47, 1], // 4个质数+非质数
  [4, 6, 8, 9], // 4个合数
  [10, 12, 14, 15], // 4个合数
  [16, 18, 20, 21], // 4个合数
  [22, 24, 25, 26], // 4个合数
  [27, 28, 30, 32], // 4个合数
  [33, 34, 35, 36], // 4个合数
  [38, 39, 40, 42], // 4个合数
  [44, 45, 46, 48, 49] // 5个剩余合数
]

/**
 * 尾数交错分组 CrossMantissaGroups
 */
export const FOUR_CROSS_MANTISSA_GROUPS = [
  [1, 12, 23, 34], // 4个号码（尾数1-2）
  [45, 2, 13, 24], // 4个号码（尾数2-3）
  [35, 46, 3, 14], // 4个号码（尾数3-4）
  [25, 36, 47, 4], // 4个号码（尾数4-5）
  [15, 26, 37, 48], // 4个号码（尾数5-6）
  [5, 16, 27, 38], // 4个号码（尾数6-7）
  [39, 6, 17, 28], // 4个号码（尾数7-8）
  [7, 18, 29, 40], // 4个号码（尾数8-9）
  [8, 19, 30, 41], // 4个号码（尾数9-0）
  [9, 20, 31, 42], // 4个号码（尾数0）
  [21, 32, 43, 44], // 4个号码（尾数0-1）
  [10, 11, 22, 33, 49] // 5个剩余号码
]

/**
 * 累加和分组 CumulativeSumGroups
 */
export const FOUR_CUMULATIVE_SUM_GROUPS = [
  [1, 3, 6, 10], // 4个号码（累加和）
  [15, 21, 28, 36], // 4个号码（累加和）
  [2, 4, 7, 11], // 4个号码（累加和）
  [16, 22, 29, 37], // 4个号码（累加和）
  [5, 8, 12, 17], // 4个号码（累加和）
  [23, 30, 38, 46], // 4个号码（累加和）
  [9, 13, 18, 24], // 4个号码（累加和）
  [31, 39, 47, 49], // 4个号码（累加和）
  [14, 19, 25, 32], // 4个号码（累加和）
  [26, 33, 40, 48], // 4个号码（累加和）
  [20, 27, 34, 41], // 4个号码（累加和）
  [35, 42, 43, 44, 45] // 5个剩余号码
]

/**
 * 镜像尾数分组 MirrorTailGroups
 */
export const FOUR_MIRROR_GROUPS = [
  [1, 9, 41, 49], // 4个号码（镜像尾数）
  [2, 10, 40, 48], // 4个号码（镜像尾数）
  [3, 11, 39, 47], // 4个号码（镜像尾数）
  [4, 12, 38, 46], // 4个号码（镜像尾数）
  [5, 13, 37, 45], // 4个号码（镜像尾数）
  [6, 14, 36, 44], // 4个号码（镜像尾数）
  [7, 15, 35, 43], // 4个号码（镜像尾数）
  [8, 16, 34, 42], // 4个号码（镜像尾数）
  [17, 18, 32, 33], // 4个号码（镜像尾数）
  [19, 20, 30, 31], // 4个号码（镜像尾数）
  [21, 22, 28, 29], // 4个号码（镜像尾数）
  [23, 24, 25, 26, 27] // 5个剩余号码
]

/**
 * 质数和合数间隔分组 PrimeCompositeGroups
 */
export const FOUR_PRIME_COMPOSITE_GROUPS = [
  [2, 11, 19, 29], // 4个质数
  [3, 13, 23, 31], // 4个质数
  [5, 17, 37, 41], // 4个质数
  [1, 7, 43, 47], // 4个质数+非质数
  [4, 6, 8, 9], // 4个合数
  [10, 12, 14, 15], // 4个合数
  [16, 18, 20, 21], // 4个合数
  [22, 24, 25, 26], // 4个合数
  [27, 28, 30, 32], // 4个合数
  [33, 34, 35, 36], // 4个合数
  [38, 39, 40, 42], // 4个合数
  [44, 45, 46, 48, 49] // 5个剩余合数
]

/**
 * 双双交替分组 DoubleAlternateGroups
 */
export const FOUR_DOUBLE_ALTERNATE_GROUPS = [
  [1, 2, 5, 6], // 4个号码（双双交替1）
  [9, 10, 13, 14], // 4个号码（双双交替2）
  [17, 18, 21, 22], // 4个号码（双双交替3）
  [25, 26, 29, 30], // 4个号码（双双交替4）
  [33, 34, 37, 38], // 4个号码（双双交替5）
  [41, 42, 45, 46], // 4个号码（双双交替6）
  [3, 4, 7, 8], // 4个号码（双双交替7）
  [11, 12, 15, 16], // 4个号码（双双交替8）
  [19, 20, 23, 24], // 4个号码（双双交替9）
  [27, 28, 31, 32], // 4个号码（双双交替10）
  [35, 36, 39, 40], // 4个号码（双双交替11）
  [43, 44, 47, 48, 49] // 5个剩余号码
]

/**
 * 尾数对称扩展分组 SymmetricTailExpansionGroups
 */
export const FOUR_SYMMETRIC_TAIL_EXPANSION_GROUPS = [
  [1, 10, 20, 30], // 4个号码（尾数0和1）
  [2, 11, 21, 31], // 4个号码（尾数1和2）
  [3, 12, 22, 32], // 4个号码（尾数2和3）
  [4, 13, 23, 33], // 4个号码（尾数3和4）
  [5, 14, 24, 34], // 4个号码（尾数4和5）
  [6, 15, 25, 35], // 4个号码（尾数5和6）
  [7, 16, 26, 36], // 4个号码（尾数6和7）
  [8, 17, 27, 37], // 4个号码（尾数7和8）
  [9, 18, 28, 38], // 4个号码（尾数8和9）
  [19, 29, 39, 40], // 4个号码（尾数9和0）
  [41, 42, 43, 44], // 4个号码（尾数0-1）
  [45, 46, 47, 48, 49] // 5个剩余号码
]

/**
 * 隔位累加分组 SkippedSumGroups
 */
export const FOUR_SKIPPED_SUM_GROUPS = [
  [1, 4, 7, 10], // 4个号码（累加间隔1）
  [13, 16, 19, 22], // 4个号码（累加间隔2）
  [25, 28, 31, 34], // 4个号码（累加间隔3）
  [37, 40, 43, 46], // 4个号码（累加间隔4）
  [2, 5, 8, 11], // 4个号码（累加间隔1）
  [14, 17, 20, 23], // 4个号码（累加间隔2）
  [26, 29, 32, 35], // 4个号码（累加间隔3）
  [38, 41, 44, 47], // 4个号码（累加间隔4）
  [3, 6, 9, 12], // 4个号码（累加间隔1）
  [15, 18, 21, 24], // 4个号码（累加间隔2）
  [27, 30, 33, 36], // 4个号码（累加间隔3）
  [39, 42, 45, 48, 49] // 5个剩余号码
]

/**
 * 中心扩展对称分组 CenterSymmetricGroups
 */
export const FOUR_CENTER_SYMMETRIC_GROUPS = [
  [23, 24, 25, 26], // 4个号码（中心扩展1）
  [21, 22, 27, 28], // 4个号码（中心扩展2）
  [19, 20, 29, 30], // 4个号码（中心扩展3）
  [17, 18, 31, 32], // 4个号码（中心扩展4）
  [15, 16, 33, 34], // 4个号码（中心扩展5）
  [13, 14, 35, 36], // 4个号码（中心扩展6）
  [11, 12, 37, 38], // 4个号码（中心扩展7）
  [9, 10, 39, 40], // 4个号码（中心扩展8）
  [7, 8, 41, 42], // 4个号码（中心扩展9）
  [5, 6, 43, 44], // 4个号码（中心扩展10）
  [3, 4, 45, 46], // 4个号码（中心扩展11）
  [1, 2, 47, 48, 49] // 5个剩余号码
]

/**
 * 奇偶对称分组 OddEvenSymmetricGroups
 */
export const FOUR_ODD_EVEN_SYMMETRIC_GROUPS = [
  [1, 3, 47, 49], // 4个号码（奇数对称分组）
  [2, 4, 46, 48], // 4个号码（偶数对称分组）
  [5, 7, 43, 45], // 4个号码（奇数对称分组）
  [6, 8, 42, 44], // 4个号码（偶数对称分组）
  [9, 11, 39, 41], // 4个号码（奇数对称分组）
  [10, 12, 38, 40], // 4个号码（偶数对称分组）
  [13, 15, 35, 37], // 4个号码（奇数对称分组）
  [14, 16, 34, 36], // 4个号码（偶数对称分组）
  [17, 19, 31, 33], // 4个号码（奇数对称分组）
  [18, 20, 30, 32], // 4个号码（偶数对称分组）
  [21, 23, 27, 29], // 4个号码（奇数对称分组）
  [22, 24, 25, 26, 28] // 5个剩余号码
]

/**
 * 四象限分组 QuadrantGroups
 */
export const FOUR_QUADRANT_GROUPS = [
  [1, 2, 13, 25], // 4个号码（象限1，左上）
  [3, 4, 15, 27], // 4个号码（象限2，右上）
  [5, 6, 17, 29], // 4个号码（象限3，左下）
  [7, 8, 19, 31], // 4个号码（象限4，右下）
  [9, 10, 21, 33], // 4个号码（象限扩展1）
  [11, 12, 23, 35], // 4个号码（象限扩展2）
  [14, 16, 24, 36], // 4个号码（象限扩展3）
  [18, 20, 26, 38], // 4个号码（象限扩展4）
  [22, 28, 30, 32], // 4个号码（象限扩展5）
  [34, 40, 42, 44], // 4个号码（象限扩展6）
  [37, 39, 41, 43], // 4个号码（象限扩展7）
  [45, 46, 47, 48, 49] // 5个剩余号码
]

/**
 * 金字塔分组 PyramidGroups
 */
export const FOUR_PYRAMID_GROUPS = [
  [1, 24, 25, 49], // 4个号码（顶层）
  [2, 23, 26, 48], // 4个号码（第二层）
  [3, 22, 27, 47], // 4个号码（第三层）
  [4, 21, 28, 46], // 4个号码（第四层）
  [5, 20, 29, 45], // 4个号码（第五层）
  [6, 19, 30, 44], // 4个号码（第六层）
  [7, 18, 31, 43], // 4个号码（第七层）
  [8, 17, 32, 42], // 4个号码（第八层）
  [9, 16, 33, 41], // 4个号码（第九层）
  [10, 15, 34, 40], // 4个号码（第十层）
  [11, 14, 35, 39], // 4个号码（第十一层）
  [12, 13, 36, 37, 38] // 5个剩余号码（底层）
]

/**
 * 倒金字塔分组 InvertedPyramidGroups
 */
export const FOUR_INVERTED_PYRAMID_GROUPS = [
  [1, 2, 24, 25], // 4个号码（底层）
  [3, 4, 23, 26], // 4个号码（倒数第二层）
  [5, 6, 22, 27], // 4个号码（倒数第三层）
  [7, 8, 21, 28], // 4个号码（倒数第四层）
  [9, 10, 20, 29], // 4个号码（倒数第五层）
  [11, 12, 19, 30], // 4个号码（倒数第六层）
  [13, 14, 18, 31], // 4个号码（倒数第七层）
  [15, 16, 17, 32], // 4个号码（倒数第八层）
  [33, 34, 35, 36], // 4个号码（倒数第九层）
  [37, 38, 39, 40], // 4个号码（倒数第十层）
  [41, 42, 43, 44], // 4个号码（倒数第十一层）
  [45, 46, 47, 48, 49] // 5个剩余号码（顶部）
]

/**
 * 折返分组 FoldBackGroups
 */
export const FOUR_FOLDBACK_GROUPS = [
  [1, 2, 48, 49], // 4个号码（两端对称折返1）
  [3, 4, 46, 47], // 4个号码（两端对称折返2）
  [5, 6, 44, 45], // 4个号码（两端对称折返3）
  [7, 8, 42, 43], // 4个号码（两端对称折返4）
  [9, 10, 40, 41], // 4个号码（两端对称折返5）
  [11, 12, 38, 39], // 4个号码（两端对称折返6）
  [13, 14, 36, 37], // 4个号码（两端对称折返7）
  [15, 16, 34, 35], // 4个号码（两端对称折返8）
  [17, 18, 32, 33], // 4个号码（两端对称折返9）
  [19, 20, 30, 31], // 4个号码（两端对称折返10）
  [21, 22, 28, 29], // 4个号码（两端对称折返11）
  [23, 24, 25, 26, 27] // 5个中心号码
]

/**
 * 对角线分组 DiagonalGroups
 */
export const FOUR_DIAGONAL_GROUPS = [
  [1, 6, 11, 16], // 4个号码（对角线1）
  [21, 26, 31, 36], // 4个号码（对角线2）
  [2, 7, 12, 17], // 4个号码（对角线3）
  [22, 27, 32, 37], // 4个号码（对角线4）
  [3, 8, 13, 18], // 4个号码（对角线5）
  [23, 28, 33, 38], // 4个号码（对角线6）
  [4, 9, 14, 19], // 4个号码（对角线7）
  [24, 29, 34, 39], // 4个号码（对角线8）
  [5, 10, 15, 20], // 4个号码（对角线9）
  [25, 30, 35, 40], // 4个号码（对角线10）
  [41, 42, 43, 44], // 4个号码（剩余对角线）
  [45, 46, 47, 48, 49] // 5个剩余号码
]

/**
 * 差值递增分组 DifferenceGroups
 */
export const FOUR_DIFFERENCE_GROUPS = [
  [1, 3, 5, 7], // 4个号码（差值1递增）
  [10, 13, 16, 19], // 4个号码（差值3递增）
  [22, 26, 30, 34], // 4个号码（差值4递增）
  [2, 4, 9, 14], // 替换5为4，确保唯一性
  [17, 21, 25, 29], // 保持不变
  [33, 37, 41, 45], // 保持不变
  [6, 11, 15, 18], // 替换10为11，避免重复
  [23, 27, 31, 35], // 保持不变
  [39, 43, 46, 47], // 替换48为47，避免遗漏
  [12, 20, 24, 28], // 替换15为20
  [32, 36, 38, 40], // 替换28为38，避免遗漏
  [8, 42, 44, 48, 49] // 替换11为42，确保完整性
]

export const FOUR_GROUP_MAP = {
  FOUR_ASCENDING_GROUPS,
  FOUR_ODD_EVEN_GROUPS,
  FOUR_MANTISSA_GROUPS,
  FOUR_SKIPPED_GROUPS,
  FOUR_PRIME_GROUPS,
  FOUR_CROSS_MANTISSA_GROUPS,
  FOUR_CUMULATIVE_SUM_GROUPS,
  FOUR_MIRROR_GROUPS,
  FOUR_PRIME_COMPOSITE_GROUPS,
  FOUR_DOUBLE_ALTERNATE_GROUPS,
  FOUR_SYMMETRIC_TAIL_EXPANSION_GROUPS,
  FOUR_SKIPPED_SUM_GROUPS,
  FOUR_CENTER_SYMMETRIC_GROUPS,
  FOUR_ODD_EVEN_SYMMETRIC_GROUPS,
  FOUR_QUADRANT_GROUPS,
  FOUR_PYRAMID_GROUPS,
  FOUR_INVERTED_PYRAMID_GROUPS,
  FOUR_FOLDBACK_GROUPS,
  FOUR_DIAGONAL_GROUPS,
  FOUR_DIFFERENCE_GROUPS
}
